Autonomic computing systems include self-managing computing systems arranged to handle the increased complexity of computing systems, in particular in distributed computing systems such as those used in large scale computer networks. These large scale networks run a variety of applications including communication and network based applications and deal with a variety of different computational tasks. Additional complexity is introduced from the functionality required to support mobile computing and communication functionalities for devices such as laptop computers, cellular phones and personal digital assistants.
Control of large scale systems includes management and allocation of system resources. Manual management and resource allocation using one or more human operators is time-consuming, expensive and error-prone. Autonomic computing systems, therefore, manage themselves largely without direct human intervention. An operator in the autonomic computing system defines and inputs rules and policies that the autonomic computing system uses as guidelines or parameters in controlling the computing system. In general, the autonomic computing system utilizes closed control loops to monitor a given system resource and to keep the allocation or utilization of this resource within the parameters specified by the operator. The autonomic control system employs self-management decisions to monitor and control the system resource or system resources of a given closed control loop.
Self-managing systems make some self-management decisions using optimization, configuration and related calculations. These calculations are typically performed using system models, which are representations of the likely behavior of various parts of the system, and the environment in which the system runs, under a variety of possible circumstances. These calculations are used, for instance, when the system estimates the impact on its overall behavior of possible changes to the allocation of resources, the setting of component control variables and other management actions. For a given autonomic computing system, these calculations can be executed in a single centralized location or in a plurality of concurrent decentralized locations. Current applications of either centralized or decentralized approaches have strengths and weaknesses.
Performing the calculations in a centralized manner, where one part of the autonomic computing system utilizes a model that includes a variety of system components and the interactions among these components, results in the advantage of having more information available and taking more interactions into account when making control and allocation determinations. This increased amount of information results in obtaining better results. However, centralized approaches have the disadvantage of requiring frequent software updates to the part of the autonomic software system doing the global calculation to enable that part to accurately model new types of components in the system. In complex heterogeneous systems, replacing a piece of central decision-making software every time a new kind of component is added is not a practical requirement.
Decentralized approaches overcome this disadvantage of a centralized system by having each component of the system, at a given level of granularity, responsible for the details of its own modeling. Each component handles at least some amount of calculation and optimization and passes the quantitative results of these calculations and optimizations to more global optimizers and decision makers in a generally standardized or generic format. The global optimizers then perform more global or centralized optimization calculations on the data received from a variety of individual components. In this decentralized approach, adding a new type of component to the system requires no changes to the parts of the system doing the more global calculations, as long as the new type of component can express the results of its own calculations in the desired standardized format. The decentralized approach, however, does not provide for the calculations done in the individual components to benefit from the more global information potentially available at higher levels of the system. Therefore, the overall results of the decentralized system are less optimal.
Therefore, autonomic computing systems and methods for operating autonomic computing systems are required that provide for the simplicity of operation and updating found in decentralized systems with the increased level of optimization found in centralized systems.